/**
 * 作者：吴超
 * 邮箱：wuchao_19931120@163.com
 * 时间：2022-01-17
 * 描述：
 */

class ListNode {
      int val;
      ListNode next;
      ListNode(int x) {
          val = x;
          next = null;
      }
  }

public class LianBiaoXiangJiao {

    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        if(headA == null || headB == null) return null;
        ListNode l1 = headA;
        ListNode l2 = headB;
        while(l1 != l2){
            /*
             如果两个长度相同或者不同，且没有交点的时候，会在第一轮结束后都为Null,然后退出。
             因为两者是交换遍历，所以长度都是一样的，等于两者的和。所以都会在同一时间到达null的位置。
             */
            l1 = l1 == null?headB:l1.next;
            l2 = l2 == null?headA:l2.next;
        }
        return l1;
    }

}
